#include<stdio.h>
#include<stdlib.h>
#include"StdFile.h"
#include<string.h>

#define MAX 20
struct Map
{
    char key[MAX];
    char value[MAX];
};

struct Map *CreateMap(const char *key,const char *value)
{
    struct Map* map=(struct Map*)malloc(sizeof(struct Map));
    if(map==NULL)
    {
        printf("Map malloc error!\n");
        return NULL;
    }
    strcpy(map->key,key);
    strcpy(map->value,value);
    return map;
}

void FreeMap(struct Map *map)
{
    if(map!=NULL)
    {
        free(map);
    }
}

void ElementTypePrint(ElementType element)
{
    char *str=(char *)element;
    printf("str:%s\n",str);
}

void ElementTypeFree(ElementType element)
{
    char *str=(char *)element;
    free(str);
}

static DLlist MapList;
void StrTok(ElementType element)
{
    char *str=(char *)element;
    char *key=strtok(str,"=");
    char *value=strtok(NULL,"=");
    struct Map *map=CreateMap(key,value);
    InsertTail(&MapList,map);
}

void PrintMap(ElementType element)
{
    struct Map *map=(struct Map *)element;
    printf("key:%s  value:%s\n",map->key,map->value);
}

// int main()
// {
//     DLlist *list=GetLineFromFile("file.txt");
//     Travel(list,ElementTypePrint);
//     FreeDLinklist(list,ElementTypeFree);
//     return 0;
// }

// int main()
// {
//     char temp[20]="helloworld";
//     SaveToFile("file.txt",temp,20);
//     return 0;
// }

// int main()
// {
//     DLlist *list=GetLineFromFile("file.txt");
//     SaveLineToFile("file1.txt",list);
//     return 0;
// }

// int main()
// {
//     AppendToFile("file1.txt","\n243class0808");
//     return 0;
// }

int main()
{
    InitDLinkList(&MapList);
    DLlist *list=GetLineFromFile("log.txt");
    Travel(list,StrTok);
    Travel(&MapList,PrintMap);
    return 0;
}

// int main()
// {
//     // CreateFile("log12.txt");
//     // CreateFloder("game");

//     // CopyFile("log.txt","log1.txt");

//     RemoveFile("file1.txt");
//     return 0;
// }